#案例：演示字典类型中的常用方法！

#获取字典类型中的所有函数
print(dir({}))

# 函数原型：List obj.keys();
# 函数功能：返回一个字典obj中所有key组成的列表！
# 返回值：返回一个列表，列表中元素都是有字典obj中所有key。
a={"id":1,"name":"张三","age":27,"score":78.50}
ret=list(a.keys())
print(ret)

# 函数原型：List obj.values();
# 函数功能：返回字典obj中所有的值组成的列表！
# 返回值：一个列表。列表中每个元素都是字典obj中元素的值
a={"id":1,"name":"张三","age":27,"score":78.50}
ret=list(a.values())
print(ret)

# 函数原型：void obj.clear();
# 函数功能：清空字典obj。即删除字典中所有的元素。注意：字典的内存还在。此时字典是空字典{}！
#
# 注意：clear方法和del语句是有区别！
a={"id":1,"name":"张三","age":27,"score":78.50}
a.clear()
print(a) #a={}


# 函数原型：Object obj.get(Object key[,defalut=None]);
# 函数功能：返回字典obj中键是key对应的元素的值！如果给定的key不存在，那么返回第二个参数defalut的值！
# 形参key：字典中的一个键！
# 形参default：如果此key不存在时，就返回default的值！
a={"id":1,"name":"张三","age":27,"score":78.50}
# ret=a.get("name"); #Key存在时
ret=a.get("addr","深圳市龙华区") #Key不存在时
print(ret)

# 函数原型：Object obj.setdefault(Object key[,default=None]);
# 函数功能：返回字典obj中键=key的元素的值；如果key不存在，那么就相当于新增一个元素，该元素的键=key，该元素的值=default；
a={"id":1,"name":"张三","age":27,"score":78.50}
# ret=a.setdefault("name") #Key存在时
ret=a.setdefault("addr","深圳市龙华区") #Key不存在时
print(ret)
print(a)


#如何判断字典中有无某元素，有无某Key
#格式：Key in 字典名
a={"id":1,"name":"张三","age":27,"score":78.50}
ret="addr" in a
print(ret)

# 函数原型：List obj.items();
# 函数功能：以列表返回可遍历的(键, 值) 元组数组，即返回一个列表，列表中每个元素都是一个元组。字典中的一个元素就对应列表中的一个元组元素！
# 例如：字典{"name":"tom","age":27}，返回:[("name","tom"),("age",27)]!
# 注意：{k1:v1,k2:v2}-> [(k1,v1),(k2,v2)]
a={"id":1,"name":"张三","age":27,"score":78.50}
ret=list(a.items())
print(ret)


# 函数原型：void obj.update(Dict dict2);
# 函数功能：把字典dict2中的元素新增或更新到字典obj中！注意会改变字典obj的值！
# 新增：如果字典2中某key存在，而字典obj中该key不存在，那么就是新增！
# 更新：如果字典2中某key存在，并且字典obj中该key也存在，那么就是更新(更新字典obj中的值)。
a={"id":1,"name":"张三","age":27,"score":78.50}
b={"name":"李四","addr":"深圳市龙华区"}
a.update(b)
print(a)
print(b)


# 函数原型：Object obj.pop(Object key,default=None);
# 函数功能：从字典obj中删除键=key的元素！返回是该key对应的元素的值。如果key不存在，那么返回default参数指定的值！
# 注意：如果key不存在，那么deault参数一定要给，否则会抛异常！
a={"id":1,"name":"张三","age":27,"score":78.50}
# ret=a.pop("name") #Key存在时
ret=a.pop("addr","深圳市龙华区") #Key不存在时
print(ret)
print(a)